package com.bs.areport.action.report;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.bs.areport.service.report.ChargeIncomeByMonthDao;
import com.bs.restframework.context.SystemContext;
import com.bs.restframework.context.util.SystemContextUtil;
import com.bs.restframework.session.UserSession;
import com.bs.restframework.web.result.ResultModle;
import com.bs.restframework.web.result.ResultType;

/**
 * 
 * <p>类名称：收费项目月情况表控制类</p>
 * <p>创建时间：2012-03-16</p>
 * <p>作者：李新宇</p>
 */
public class ChargeIncomeByMonthAction {
	
	private ChargeIncomeByMonthDao dao;
	public  ChargeIncomeByMonthDao getDao() {
		return dao;
	}

	public void setDao(ChargeIncomeByMonthDao dao) {
		this.dao = dao;
	}
	
	private List<Map> steps=new ArrayList<Map>();
	
	private String stepIndex="-1";
	/**
	 * 
	 * <p>函数名称：list</p>
	 * <p>功能说明：查询列表</p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-16</p>
	 * <p>作者：李新宇</p>
	 */
	public ResultModle list() throws Exception
	{
		Map<String, Object> params = SystemContext.getInParams();
		
		//获取用户单位信息
		String token =(String)params.get("Token");
		UserSession userSession = SystemContextUtil.getSessionMange().getUserSession(token);
		String userDeptCode=(String)userSession.getAttribute("deptCode");
		stepIndex=(String)params.get("stepIndex");
		
        Map<String, Object> resultBean = dao.getReport(params,userDeptCode);
        
		//记录访问足迹
//		if(!"Y".equals(((String)params.get("isStep")))){
			recordSteps(params);
			
//		}	
		
        if(!"Y".equals(((String)params.get("isQuery")))&&!"Y".equals(((String)params.get("isNextLevel")))){
        	steps.clear();
        	stepIndex="-1";
        }
		
        resultBean.put("steps", steps);
        resultBean.put("stepIndex", stepIndex);
		return new ResultModle(ResultType.OUTPUT_JSON_STREAM, "user", resultBean);
	}
	/**
	 * 
	 * <p>函数名称：getChargeTree</p>
	 * <p>功能说明：收费项目下拉树</p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-15</p>
	 * <p>作者：陈金滨</p>
	 */
	public ResultModle getChargeTree() throws Exception
	{				
		List<Map> resultBean=dao.getChargeTree();
		
		return new ResultModle(ResultType.OUTPUT_JSON_STREAM, "user", resultBean);
	}	
	/**
	 * 
	 * <p>函数名称：getYear</p>
	 * <p>功能说明：获取数据库中数据最低年份</p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-22</p>
	 * <p>作者：陈金滨</p>
	 */
	@SuppressWarnings("unchecked")
	public ResultModle GETYEAR() throws Exception
	{				
		List<Map> resultBean=dao.ResultYear();
		
		return new ResultModle(ResultType.OUTPUT_JSON_STREAM, "user", resultBean);

	}
	
	/**
	 * 
	 * <p>函数名称：getQtip</p>
	 * <p>功能说明：获取饼图数据</p>
	 * <p>参数说明：</p>
	 * <p>创建时间：2012-03-21</p>
	 * <p>作者：李新宇</p>
	 */
	 public ResultModle getQtip() throws Exception
	 {
		 Map<String, Object> params = SystemContext.getInParams();	
		 Map<String, Object> resultBean =new HashMap<String, Object>();
		 
		 //获取用户单位信息
		 String token =(String)params.get("Token");
		 UserSession userSession = SystemContextUtil.getSessionMange().getUserSession(token);
		 String userDeptCode=(String)userSession.getAttribute("deptCode");		 
		 
		 List<Map> list=dao.getQtip(params,userDeptCode);
		 
		 resultBean.put("qtipData", list);
		 
		 return new ResultModle(ResultType.OUTPUT_JSON_STREAM, "user", resultBean);
	 }
	 
		/**
		 * 
		 * <p>函数名称：recordSteps</p>
		 * <p>功能说明：记录访问足迹</p>
		 * <p>参数说明：</p>
		 * <p>创建时间：2012-03-21</p>
		 * <p>作者：李新宇</p>
		 */	 
	 public void recordSteps(Map<String, Object> params) throws Exception
	 {
		 String rowName=(String)params.get("rowName");
		 
		 if((rowName!=null&&!"".equals(rowName))){
			 params.put("stepName", rowName);
			 
		 if(steps.size()>=15)
			 steps.remove(0);
			 
			 for (Map<String,Object> m : steps) {
				if(rowName.equals(m.get("stepName").toString())){
					 steps.remove(m);
					 break;
				}
			}
			

			 steps.add(params);
			 stepIndex=Integer.toString(steps.size()-1);
		 }
	 }
}
